#include<iostream>
#include<vector>
using namespace std;
int f[24];
int a[25];
int lt[25][25];
int zt[25];
int bj[25];
int ab[25];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        f[i]=a[i];
    }
  for(int i=1;i<=n;i++){
    for(int j=i+1;j<=n;j++){
        cin>>lt[i][j];
    }
  }
  int ans=0;
  for(int i=1;i<=n;i++){
    for(int j=i+1;j<=n;j++){
        if(lt[i][j]){
            f[j]=max(f[j],f[i]+a[j]);
        }
    }
    if(f[i]>f[ans])ans=i;
  }
  int num=0;
  int now=ans;
  for(int i=ans;i>=1;i--){
    if(now!=i)break;
    for(int j=i-1;j>=1;j--){
        if(lt[j][i]){
            if((f[j]+a[i])==f[i]){
                num++;
                ab[num]=j;
                i=j+1;
                now=j;
                break;
            }
    }
        }
        
    }
for(int i=num;i>=1;i--){
    cout<<ab[i]<<" ";
  }
  cout<<ans<<endl;
  cout<<f[ans];
    return 0;
  }


